<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of TipoProdutoMapper
 *
 * @author felipe
 */
class App_Model_TipoProdutoMapper extends Voitech_Mapper {
    public function __construct(App_Model_TipoProduto $obTipoProduto){
        $this->obModel = $obTipoProduto;
    }
    
    public function buscarPorId(){
        $obRow = App_Model_Db_TipoProduto::build()->buscarId($this->obModel->getCoTipoProduto());
        if(empty($obRow))
        {
            return;
        }
        $this->carregar($obRow);               
        return $this;
    }
    
    public function carregar(stdClass $obRow){
        $this->obModel->setCoTipoProduto($obRow->co_tipo_produto);
        $this->obModel->setNoTipoProduto($obRow->no_tipo_produto)
                      ->setDtCadastro($obRow->dt_cadastro)
                      ->setExcluir($obRow->excluir)
                      ->setStAtivo($obRow->st_ativo);
        return $this;
    }
    
    public function cadastrar() {
        $arTipoProduto = $this->retornarArrayPopulado();  
        $arTipoProduto['co_pessoa_cadastro'] = $this->obModel->getObUsuarioCadastro()->getCoPessoa();
        return App_Model_Db_TipoProduto::build()->insert($arTipoProduto);                                         
    }
    
    public function alterar(){
        $arTipoProduto = $this->retornarArrayPopulado();        
        return App_Model_Db_TipoProduto::build()->update($arTipoProduto,App_Model_Db_TipoProduto::build()->getAdapter()->quoteInto('co_tipo_produto = ?',$this->obModel->getCoTipoProduto()));                
    }
    
    public function ativar() {
        if($this->obModel->getCoTipoProduto() == ''){
            throw new Voitech_Exception('Falta cod. tipo_produto');
        }
        $arrTipoProduto = array('st_ativo'=>'S');       
        return App_Model_Db_TipoProduto::build()->update($arrTipoProduto,App_Model_Db_TipoProduto::build()->getAdapter()->quoteInto('co_tipo_produto = ?',$this->obModel->getCoTipoProduto()));                
    }
    
    public function desativar() {
        if($this->obModel->getCoTipoProduto() == ''){
            throw new Voitech_Exception('Falta cod. tipo_produto');
        }
        $arrTipoProduto = array('st_ativo'=>'N');
        return App_Model_Db_TipoProduto::build()->update($arrTipoProduto
                                                      ,App_Model_Db_TipoProduto::build()->getAdapter()->quoteInto('co_tipo_produto = ?',$this->obModel->getCoTipoProduto()));                
    }
    
    public function retornarArrayPopulado() {
        $arrTipoProduto = array('no_tipo_produto'=>$this->obModel->getNoTipoProduto());
       
        if( $this->obModel->getCoTipoProduto() != '' ) {
            $arrTipoProduto['co_tipo_produto'] = $this->obModel->getCoTipoProduto();
        }
        return $arrTipoProduto;
   }
   
    public function excluir() {
        if($this->obModel->getCoTipoProduto() == ''){
            throw new Voitech_Exception('Falta cod. tipo_produto');
        }
        return App_Model_Db_TipoProduto::build()->delete(App_Model_Db_TipoProduto::build()->getAdapter()->quoteInto('co_tipo_produto = ?',$this->obModel->getCoTipoProduto()));                
    }
       
}
